Field of the Disclosure
This disclosure relates generally to resource management in a computer system, and more particularly to systems and methods for managing access to shared resources in systems in which the resources necessary to perform a given task can vary over time.
Description of the Related Art
Computer systems often include shared resources, each of which can be requested by multiple potential requestors, and a resource manager that arbitrates for access to those shared resources. In some existing systems, access to shared resources is granted on a round robin basis, with none of the requestors having a higher priority than any others when it comes to resource allocation/arbitration decisions. In other systems, the arbiter gives preference to particular ones of the requestors for a given shared resource (e.g., requestors that are designated as having a higher priority for that resource or requestors that assert a high-priority signal indicating that their requests should be higher than those of one or more other requestors).
Because of the nature of clocked computer systems, the resources necessary to perform a task in any given clock cycle can change from cycle to cycle. In some systems, the resources required to perform a task can change with time based on the available data (e.g., based on the data available at any given time due to the timing of various signals or due to other operations that take place at different times during a request/response cycle and on which resource allocation decisions are dependent). For example, some existing systems include a multiple banked memory that is shared among multiple requestors and for which the requirements for granting access to a given memory bank can be different at different times (for at least some of the requestors).
In some existing systems, the maximum possible resource requirements are always used to make allocation/arbitration decisions, without taking advantage of the time-varying nature of the resource requirements. In these systems, a typical approach is to require that the requestor requests the maximum resource requirements that could possibly be needed during any clock cycle and to only allow the task to proceed when those maximum resource requirements are met. This can result in resources that are not actually needed by a given requestor being unavailable to other requestors during at least some clock cycles (e.g., during at least some of the time between when a request is made and the clock cycle during which the request is granted).